home *** CD-ROM | disk | FTP | other *** search
- static char mk_timestr_prog[] = "@(#)Zeit-String aus Sekunden oder Minuten bauen";
- static char mk_timestr_ver[] = "@(#)v1.00/kr ; 10.06.91";
- /* Autor Klaus Rath
- **
- ** Deklaration char *mk_timestr(unsigned long min_sec, int toggle, int format);
- **
- ** Übergabe Die Funktion erwartet einen UNSIGNED LONG-Wert min_sec, der
- ** entweder als Sekunden- oder als Minutenzahl interpretiert, je
- ** nach Setzung des Schalter-INT-Wertes toggle. Außerdem wird ein
- ** INT-Wert erwartet, der festlegt, in welchem Format der
- ** Zeitstring zurückgegeben werden soll.
- ** ( erlaubte Formate: siehe util.h ! )
- **
- ** Rückgabe Es wird ein Zeiger auf ein CHAR-Array zurückgegeben, das von
- ** der aufrufenden Funktion per strcpy() in ein ausreichend
- ** dimensioniertes Array kopiert werden kann.
- **
- ** Anmerkungen Die Funktion implementiert außerdem ein Format TI_MIN_SEC, das
- ** es erlaubt, den Wertebereich von min_sec ( LONG ! ) voll aus-
- ** zu nutzen. Es werden dann zusätzlich Tage vorangestellt.
- ** Mit der Schalterstellung 's' für Sekunden lassen sich damit
- ** 49,710 Tage ( entsprechend 136 Jahre) darstellen.
- ** Mit 'm' für Minuten vergrößert sich der Bereich auf ca.
- ** 2,982,600 Tage ( entsprechend 8000 Jahre ).
- **
- ** Änderungen 1.00 ; 10.06.91
- ** - Erste Version
- */
-
- #include <stdio.h>
- #include <string.h>
- #ifdef __TURBOC__
- #define ANSI
- #define MSDOS
- #include <stdlib.h>
- #endif
- #include "datum.h"
-
- #ifdef ANSI
- char *mk_timestr(unsigned long min_sec, int toggle, int format)
- #else
- char *mk_timestr(min_sec, toggle, format)
- unsigned long min_sec;
- int toggle;
- int format;
- #endif
- {
- /* Variablen definieren :
- */
- char zeit[30];
- char tage_s[10];
- char stunden_s[3];
- char minuten_s[3];
- char sekunden_s[3];
- long tage,stunden,minuten,sekunden;
-
- /* Initialisieren :
- */
- zeit[0] =
- tage_s[0] = stunden_s[0] = minuten_s[0] = sekunden_s[0] = '\0';
- tage = stunden = minuten = sekunden = 0L;
-
- /* Übernommenen Wert zerlegen :
- ** ----------------------------
- */
- if ( toggle == 's' ) { /* Übernahme von Sekunden */
- while ( min_sec > 86400 ) {
- tage++;
- min_sec -=86400;
- }
- while ( min_sec > 3600 ) {
- stunden++;
- min_sec -= 3600;
- }
- while ( min_sec > 60 ) {
- minuten++;
- min_sec -= 60;
- }
- sekunden = min_sec;
- } /* if(toggle=='s') */
-
- else if ( toggle == 'm' ) { /* Übernahme von Minuten */
- while ( min_sec > 1440 ) {
- tage++;
- min_sec -= 1440;
- }
- while ( min_sec > 60 ) {
- stunden++;
- min_sec -= 60;
- }
- minuten = min_sec;
- }
-
- else /* Nicht implementiert : Fehler */
- return(NULL);
- /* ENDE: Zerlegung */
-
- /* Umkopieren in Strings :
- ** -----------------------
- */
- sprintf(tage_s, "%ld",tage);
- sprintf(stunden_s, "%02d",stunden);
- sprintf(minuten_s, "%02d",minuten);
- sprintf(sekunden_s, "%02d",sekunden);
-
- switch ( format ) {
- case TI_HM_D :
- strcpy(zeit,stunden_s);
- strcat(zeit,":");
- strcat(zeit,minuten_s);
- break;
- case TI_HMS_D :
- strcpy(zeit,stunden_s);
- strcat(zeit,":");
- strcat(zeit,minuten_s);
- strcat(zeit,":");
- strcat(zeit,sekunden_s);
- break;
- case TI_HM_P :
- strcpy(zeit,stunden_s);
- strcat(zeit,".");
- strcat(zeit,minuten_s);
- break;
- case TI_HMS_P :
- strcpy(zeit,stunden_s);
- strcat(zeit,".");
- strcat(zeit,minuten_s);
- strcat(zeit,".");
- strcat(zeit,sekunden_s);
- break;
- case TI_HM_DB :
- strcpy(zeit,stunden_s);
- strcat(zeit,minuten_s);
- break;
- case TI_HMS_DB :
- strcpy(zeit,stunden_s);
- strcat(zeit,minuten_s);
- strcat(zeit,sekunden_s);
- break;
- case TI_MIN_SEC:
- strcpy(zeit,tage_s);
- strcat(zeit,":");
- strcat(zeit,stunden_s);
- strcat(zeit,":");
- strcat(zeit,minuten_s);
- strcat(zeit,":");
- strcat(zeit,sekunden_s);
- break;
- default: return((char *)NULL);
- } /* ENDE: switch(format) */
-
- return(zeit);
-
- } /* ENDE: mk_timestr() */
-